#include "filterwordsmodel.h"
#include <QDebug>

/** Содержит ли строка str хотя бы 1 символ из chars.*/
inline bool contains(const QString & str, const QString & chars){
	for(int i = 0; i < chars.size(); ++i)
		if(str.contains(chars.at(i)))
			return true;
	return false;
}

FilterWordsModel::FilterWordsModel(QObject *parent) :
	QSortFilterProxyModel(parent){}

/** Куски текста содержаще символы переданные в filter будут скрыты.*/
QString FilterWordsModel::filter() const{
	return Filter;
}

/** Куски текста содержаще символы переданные в filter будут скрыты.*/
void FilterWordsModel::setFilter( const QString & pattern ){
	Filter = pattern;
}


/** Слова содержаще символы переданные в filter2 будут скрыты.*/
QString FilterWordsModel::filter2() const{
	return Filter2;
}

/** Слова содержаще символы переданные в filter2 будут скрыты.*/
void FilterWordsModel::setFilter2( const QString & pattern ){
	Filter2 = pattern;
}

bool FilterWordsModel::filterAcceptsRow( int s_r, const QModelIndex & s_p ) const{
	qDebug()<<trUtf8("Фильтрую строку.");
	if(s_p == QModelIndex()){ // Фильтруем куски текста.
		qDebug()<<trUtf8("Фильтруем куски текста.");
		return !contains(s_p.child(s_r, 0).data().toString(), Filter);
	}else if(s_p.isValid() && s_p.parent() == QModelIndex()){ // Фильтруем найденные слова.
		qDebug()<<trUtf8("Фильтруем найденные слова.");
		return !contains(s_p.child(s_r, 0).data().toString(), Filter2);
	}
	return false;
}
